Skip to content

[bazel] Use MRI on RBE#17622

Open
p0deje wants to merge 4 commits into
trunkfrom
mri-rbe
Open

[bazel] Use MRI on RBE#17622
p0deje wants to merge 4 commits into
trunkfrom
mri-rbe

Conversation

@p0deje

@p0deje p0deje commented Jun 3, 2026

Copy link
Copy Markdown
Member

Updates the Ruby ruleset for Bazel, which now supports MRI (CRuby) toolchains on RBE. We no longer need to use JRuby for the RBE job and can stick to the default Ruby interpreter.

@selenium-ci selenium-ci added the B-build Includes scripting, bazel and CI integrations label Jun 3, 2026

@shs96c shs96c left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where we host the image is the only thing I'm seeing here I'm not comfortable with

"/usr/include/c++/11/backward",
],
cxx_flags = ["-std=c++0x"],
cxx_flags = ["-std=c++17"],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're setting this here, I think we can remove the equivalent entries in the .bazelrc. Can be done in a follow up PR.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, isn't this file only enabled on RBE, while .bazelrc is enabled for everything?

Comment thread common/remote-build/BUILD.bazel Outdated
@p0deje p0deje marked this pull request as ready for review June 7, 2026 04:23
@qodo-code-review

Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Update Bazel C++ toolchain to Bazel 9 with C++20 modules and Ubuntu 22

✨ Enhancement 🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Update Bazel C++ toolchain configuration to Bazel 9 with rules_cc migration
• Add support for C++20 modules and modern compiler features
• Update RBE container image to Ubuntu 22 with GCC 11
• Switch from JRuby to MRI Ruby for RBE builds
• Add sanitizer features (ASAN, TSAN, UBSAN) and improved macOS support
Diagram
flowchart LR
  A["Bazel 9 Migration"] --> B["rules_cc Updates"]
  B --> C["C++20 Module Support"]
  B --> D["Toolchain Config Refactor"]
  E["Ubuntu 22 RBE Image"] --> F["GCC 11 Compiler"]
  F --> G["Updated Include Paths"]
  H["MRI Ruby Support"] --> I["Remove JRuby Dependency"]
  D --> J["New Features: Sanitizers, macOS Support"]

Loading

Grey Divider

File Changes

1. common/remote-build/cc/cc_toolchain_config.bzl ✨ Enhancement +840/-181

Comprehensive C++ toolchain configuration modernization

common/remote-build/cc/cc_toolchain_config.bzl


2. common/remote-build/cc/armeabi_cc_toolchain_config.bzl ✨ Enhancement +3/-2

Update ARM toolchain to rules_cc paths

common/remote-build/cc/armeabi_cc_toolchain_config.bzl


3. common/remote-build/cc/cc_wrapper.sh ✨ Enhancement +37/-1

Add header processing and parameter file parsing

common/remote-build/cc/cc_wrapper.sh


View more (12)
4. common/remote-build/cc/deps_scanner_wrapper.sh ✨ Enhancement +12/-0

New C++ module dependencies scanner wrapper

common/remote-build/cc/deps_scanner_wrapper.sh


5. common/remote-build/cc/validate_static_library.sh ✨ Enhancement +44/-0

New static library symbol validation script

common/remote-build/cc/validate_static_library.sh


6. common/remote-build/cc/BUILD ✨ Enhancement +54/-10

Add new toolchain support files and configurations

common/remote-build/cc/BUILD


7. common/remote-build/cc/builtin_include_directory_paths ⚙️ Configuration changes +4/-4

Update GCC include paths from 9 to 11

common/remote-build/cc/builtin_include_directory_paths


8. scripts/remote-image/create-cc-toolchain-within-image.sh ✨ Enhancement +11/-2

Migrate to MODULE.bazel and rules_cc extension

scripts/remote-image/create-cc-toolchain-within-image.sh


9. scripts/remote-image/create-cc-toolchain.sh 🐞 Bug fix +1/-0

Add user flag for Docker container execution

scripts/remote-image/create-cc-toolchain.sh


10. scripts/remote-image/Dockerfile ⚙️ Configuration changes +3/-2

Update base image to Ubuntu 22 with dependencies

scripts/remote-image/Dockerfile


11. common/remote-build/BUILD.bazel ⚙️ Configuration changes +1/-1

Update RBE container image SHA256 hash

common/remote-build/BUILD.bazel


12. MODULE.bazel Dependencies +1/-1

Upgrade rules_ruby from 0.26.0 to 0.27.0

MODULE.bazel


13. .github/workflows/ci-rbe.yml ✨ Enhancement +0/-1

Remove JRuby version specification for RBE

.github/workflows/ci-rbe.yml


14. common/remote-build/cc/REPO.bazel Additional files +0/-0

...

common/remote-build/cc/REPO.bazel


15. common/remote-build/cc/WORKSPACE Additional files +0/-2

...

common/remote-build/cc/WORKSPACE


Grey Divider

Qodo Logo

@qodo-code-review

qodo-code-review Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (5) 📘 Rule violations (4) 📜 Skill insights (0)

Grey Divider


Action required

1. Build setting in deps 🐞 Bug ≡ Correctness ⭐ New
Description
//common/remote-build/cc:link_extra_lib is a cc_library that lists :link_extra_libs in deps,
but :link_extra_libs is a label_flag build setting rather than a C/C++ provider. This is likely
to fail analysis when building the generated toolchain repo (e.g., during `bazel build
@local_config_cc//...`).
Code

common/remote-build/cc/BUILD[R27-42]

+cc_library(name = "empty_lib")
+
+# Label flag for extra libraries to be linked into every binary.
+label_flag(
+    name = "link_extra_libs",
+    build_setting_default = ":empty_lib",
+)
+
+# The final extra library to be linked into every binary target. This collects
+# the above flag, but may also include more libraries depending on config.
+cc_library(
+    name = "link_extra_lib",
+    deps = [
+        ":link_extra_libs",
+    ],
+)
Evidence
The BUILD file defines link_extra_libs as a label_flag and then uses it directly as a
cc_library dependency; the regeneration script builds @local_config_cc//..., which will analyze
all targets in that generated repo including this one.

common/remote-build/cc/BUILD[27-42]
scripts/remote-image/create-cc-toolchain-within-image.sh[14-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`cc_library(name = "link_extra_lib")` depends directly on `:link_extra_libs`, but `:link_extra_libs` is a `label_flag` build setting (not a C/C++ library target). This wiring is very likely to break Bazel analysis for targets that evaluate `//common/remote-build/cc:link_extra_lib`.

## Issue Context
This directory is generated/copied as part of toolchain regeneration and is intended to be buildable.

## Fix Focus Areas
- common/remote-build/cc/BUILD[27-42]
- scripts/remote-image/create-cc-toolchain-within-image.sh[14-27]

## What to change
- Make `//common/remote-build/cc:link_extra_lib` depend only on real `cc_library` targets (e.g., `:empty_lib`) OR remove `link_extra_lib` entirely if unused.
- If the intent is to make a build-setting-controlled library available to toolchain logic, implement an explicit Starlark rule/macro that reads the build setting value and forwards the referenced target’s `CcInfo` (instead of placing the `label_flag` target itself in `deps`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. parse_option can exit wrapper 📘 Rule violation ☼ Reliability
Description
cc_wrapper.sh enables set -e but parse_option() can return a non-zero status for most
arguments, which can prematurely terminate the wrapper and break header parsing/compilation. This
violates the expectation that CI/automation scripts behave fail-safely with robust command handling.
Code

common/remote-build/cc/cc_wrapper.sh[R19-31]

set -eu

+OUTPUT=
+
+parse_option() {
+    opt=$1
+    if [ "$OUTPUT" = "1" ]; then
+        OUTPUT=$opt
+    elif [ "$opt" = "-o" ]; then
+        # output is coming
+        OUTPUT=1
+    fi
+}
Evidence
Rule 10 requires CI/automation scripts to handle external commands and preconditions safely. In
cc_wrapper.sh, set -eu is enabled and parse_option() may return the exit code of `[ "$opt" =
"-o" ] (often 1`), which can terminate the script unexpectedly when called from the argument loop.

common/remote-build/cc/cc_wrapper.sh[19-46]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`common/remote-build/cc/cc_wrapper.sh` uses `set -eu` and calls `parse_option` as a simple command. In POSIX `sh`, a function’s return status is the status of its last executed command; here that can be the `[ ... ]` test, which returns `1` for most args. With `set -e`, that non-zero return can abort the wrapper.

## Issue Context
This wrapper runs in build actions; unexpected early exits can cause flaky or consistently failing builds in RBE/CI.

## Fix Focus Areas
- common/remote-build/cc/cc_wrapper.sh[19-31]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Massive cc_toolchain_config changes 📘 Rule violation ⚙ Maintainability ⭐ New
Description
This PR includes a large, high-blast-radius C/C++ toolchain regeneration (plus related build image
changes), which makes the diff hard to audit and less reversible relative to the stated MRI-on-RBE
goal. This conflicts with the preference for small, focused diffs.
Code

common/remote-build/cc/cc_toolchain_config.bzl[R1732-1831]

+    # If you have Xcode + the CLT installed the version defaults can be
+    # too old for some standard C apis such as thread locals
+    macos_minimum_os_feature = feature(
+        name = "macos_minimum_os",
+        enabled = True,
+        flag_sets = [
+            flag_set(
+                actions = all_compile_actions + all_link_actions,
+                flag_groups = [flag_group(flags = ["-mmacosx-version-min={}".format(_target_os_version(ctx))])],
+            ),
+        ],
+    )
+
+    # Kept for backwards compatibility with the crosstool that moved. Without
+    # linking the objc runtime binaries don't link CoreFoundation for free,
+    # which breaks abseil.
+    macos_default_link_flags_feature = feature(
+        name = "macos_default_link_flags",
+        enabled = True,
+        flag_sets = [
+            flag_set(
+                actions = all_link_actions,
+                flag_groups = [flag_group(flags = [
+                    "-no-canonical-prefixes",
+                    "-fobjc-link-runtime",
+                ])],
+            ),
+        ],
+    )
+
+    # Tell bazel we support C++ modules now
+    cpp_modules_feature = feature(
+        name = "cpp_modules",
+        # set default value to False
+        # to enable the feature
+        # use --features=cpp_modules
+        # or add cpp_modules to features attr
+        enabled = False,
+    )
+
+    cpp_module_modmap_file_feature = feature(
+        name = "cpp_module_modmap_file",
+        flag_sets = [
+            flag_set(
+                actions = [
+                    ACTION_NAMES.cpp_compile,
+                    ACTION_NAMES.cpp20_module_compile,
+                    ACTION_NAMES.cpp20_module_codegen,
+                ],
+                flag_groups = [
+                    flag_group(
+                        flags = ["@%{cpp_module_modmap_file}" if ctx.attr.compiler == "clang" else "-fmodule-mapper=%{cpp_module_modmap_file}"],
+                        expand_if_available = "cpp_module_modmap_file",
+                    ),
+                ],
+            ),
+        ],
+        enabled = True,
    )
+    if ctx.attr.compiler == "clang":
+        flag_groups = [
+            flag_group(
+                flags = ["-fmodule-output=%{cpp_module_output_file}"],
+                expand_if_available = "cpp_module_output_file",
+            ),
+        ]
+    else:
+        flag_groups = []
+    cpp20_module_compile_flags_feature = feature(
+        name = "cpp20_module_compile_flags",
+        flag_sets = [
+            flag_set(
+                actions = [
+                    ACTION_NAMES.cpp20_module_compile,
+                ],
+                flag_groups = flag_groups,
+            ),
+        ],
+        enabled = True,
+    )
+
+    no_dotd_file_feature = feature(name = "no_dotd_file")

    # TODO(#8303): Mac crosstool should also declare every feature.
    if is_linux:
        # Linux artifact name patterns are the default.
-        artifact_name_patterns = []
+        artifact_name_patterns = [
+            artifact_name_pattern(
+                category_name = "cpp_module",
+                prefix = "",
+                extension = ".pcm",
+            ),
+        ]
        features = [
+            cpp_modules_feature,
+            cpp_module_modmap_file_feature,
+            cpp20_module_compile_flags_feature,
            dependency_file_feature,
            serialized_diagnostics_file_feature,
            random_seed_feature,
Evidence
Rule 2 asks to avoid broad/sweeping changes and keep diffs narrowly scoped. The PR adds substantial
new toolchain features/flags (e.g., C++ modules and macOS link behavior) and also changes the
remote-build image base, together increasing blast radius beyond a small targeted change.

AGENTS.md: Avoid Repository-Wide Refactors or Pure Formatting Sweeps; Prefer Small, Reversible Diffs
common/remote-build/cc/cc_toolchain_config.bzl[1732-1831]
scripts/remote-image/Dockerfile[1-56]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR introduces a very large, broad set of toolchain/build-environment changes in a single PR, increasing blast radius and review difficulty.

## Issue Context
Compliance prefers small, focused, reversible diffs; large regenerated toolchain changes are harder to validate and revert if something breaks.

## Fix Focus Areas
- common/remote-build/cc/cc_toolchain_config.bzl[1732-1831]
- scripts/remote-image/Dockerfile[1-56]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. Unconditional Xcode version read 🐞 Bug ☼ Reliability ⭐ New
Description
cc_toolchain_config.bzl constructs macos_minimum_os_feature unconditionally and calls
_target_os_version(ctx) during rule analysis, which reads Apple fragment state and an Xcode config
provider even when generating the Linux toolchain config. This introduces an unnecessary Apple/Xcode
dependency into the Linux toolchain analysis path and increases fragility of Linux RBE toolchain
evaluation.
Code

common/remote-build/cc/cc_toolchain_config.bzl[R1732-1741]

+    # If you have Xcode + the CLT installed the version defaults can be
+    # too old for some standard C apis such as thread locals
+    macos_minimum_os_feature = feature(
+        name = "macos_minimum_os",
+        enabled = True,
+        flag_sets = [
+            flag_set(
+                actions = all_compile_actions + all_link_actions,
+                flag_groups = [flag_group(flags = ["-mmacosx-version-min={}".format(_target_os_version(ctx))])],
+            ),
Evidence
macos_minimum_os_feature embeds a call to _target_os_version(ctx), and _target_os_version
reads the Apple fragment and Xcode config provider; meanwhile the Linux toolchain config in this
repo instantiates this rule with target_libc = "local" (so is_linux is true), meaning the
macOS/Xcode lookup is introduced into the Linux toolchain’s analysis construction path.

common/remote-build/cc/cc_toolchain_config.bzl[38-42]
common/remote-build/cc/cc_toolchain_config.bzl[230-233]
common/remote-build/cc/cc_toolchain_config.bzl[1732-1741]
common/remote-build/cc/cc_toolchain_config.bzl[2024-2030]
common/remote-build/cc/BUILD[111-170]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`macos_minimum_os_feature` is created for all toolchains and immediately calls `_target_os_version(ctx)`, which dereferences `ctx.fragments.apple...` and `ctx.attr._xcode_config[...]`. This executes even when `is_linux` is true, so Linux toolchain analysis now depends on Apple/Xcode configuration data.

## Issue Context
The Linux RBE toolchain is created via `cc_toolchain_config(name = "local", target_libc = "local", ...)`, so this unconditional macOS feature construction happens in the Linux toolchain’s analysis path.

## Fix Focus Areas
- common/remote-build/cc/cc_toolchain_config.bzl[38-42]
- common/remote-build/cc/cc_toolchain_config.bzl[1732-1743]
- common/remote-build/cc/cc_toolchain_config.bzl[230-233]
- common/remote-build/cc/BUILD[111-170]

## What to change
- Only construct `macos_minimum_os_feature` (and any `_target_os_version(ctx)` calls) inside the macOS branch (`if not is_linux:`) or otherwise defer evaluation so it is not executed during Linux toolchain analysis.
- Keep Linux toolchain feature construction free of Apple/Xcode-derived lookups unless strictly required.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Root-owned toolchain regen 🐞 Bug ☼ Reliability
Description
scripts/remote-image/create-cc-toolchain.sh now runs the generator container with --user 0 while
bind-mounting the repo, so the regeneration step writes root-owned files into the host checkout.
This can break subsequent builds/tests or any tooling that expects the working tree to be writable
by the invoking user.
Code

scripts/remote-image/create-cc-toolchain.sh[11]

+    --user 0 \
Evidence
The repo is bind-mounted into /code and the container is explicitly run as root, while the inner
script removes/recreates and copies into /code/common/remote-build/cc, so those new files will be
owned by root on the host filesystem.

scripts/remote-image/create-cc-toolchain.sh[7-14]
scripts/remote-image/create-cc-toolchain-within-image.sh[22-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`create-cc-toolchain.sh` bind-mounts the repo into `/code` and runs the container as root (`--user 0`). The inner script deletes/recreates `/code/common/remote-build/cc` and copies files there, which results in root-owned files on the host checkout.

### Issue Context
This is a developer/automation footgun: after running regeneration once, subsequent commands can fail with permission errors (e.g., when Bazel or git tries to update/remove those files).

### Fix Focus Areas
- scripts/remote-image/create-cc-toolchain.sh[7-14]

### Suggested fix
Change the docker invocation to run as the calling host user, e.g.:
- `--user "$(id -u):$(id -g)"`

If root is required for package installation inside the container, keep those steps in the Docker build layer and still run the regeneration entrypoint as the host UID/GID. As a fallback, add a `chown -R $(id -u):$(id -g) /code/common/remote-build/cc` step at the end of the inner script (but prefer matching UID/GID at runtime).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (3)
6. Deps scanner output wrong 🐞 Bug ≡ Correctness
Description
deps_scanner_wrapper.sh redirects GCC preprocessor stdout to $DEPS_SCANNER_OUTPUT_FILE even though
GCC is configured to write the P1689 deps output to a separate file via -fdeps-file, so the
cpp_module_deps_scanning action’s declared output will contain the wrong data.
Code

common/remote-build/cc/deps_scanner_wrapper.sh[12]

+/usr/bin/gcc -E -x c++ -fmodules-ts -fdeps-file=out.tmp -fdeps-format=p1689r5 "$@" >"$DEPS_SCANNER_OUTPUT_FILE"
Evidence
The wrapper writes stdout from gcc -E to $DEPS_SCANNER_OUTPUT_FILE while separately instructing
GCC to write deps info to out.tmp, which is never copied. The toolchain config explicitly sets
DEPS_SCANNER_OUTPUT_FILE to the Bazel action output (%{output_file}), so Bazel will treat
whatever the wrapper writes there as the deps-scanner result.

common/remote-build/cc/deps_scanner_wrapper.sh[1-12]
common/remote-build/cc/cc_toolchain_config.bzl[594-607]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`deps_scanner_wrapper.sh` is intended to implement Bazel’s `cpp_module_deps_scanning` tool, but it currently writes *preprocessed source* (stdout from `gcc -E`) into the declared output file (`$DEPS_SCANNER_OUTPUT_FILE`). GCC writes the P1689 module deps data to the file specified by `-fdeps-file=...`, which is currently hard-coded to `out.tmp` and then ignored.

### Issue Context
Bazel sets `DEPS_SCANNER_OUTPUT_FILE` to the action’s `%{output_file}` for `ACTION_NAMES.cpp_module_deps_scanning`, so the wrapper must write the deps-scanner output into that file.

### Fix Focus Areas
- common/remote-build/cc/deps_scanner_wrapper.sh[1-12]
- common/remote-build/cc/cc_toolchain_config.bzl[594-607]

### Suggested fix
- Ensure the wrapper writes the P1689 output to `$DEPS_SCANNER_OUTPUT_FILE`, e.g.:
 - `: "${DEPS_SCANNER_OUTPUT_FILE:?}"`
 - run gcc with `-fdeps-file="$DEPS_SCANNER_OUTPUT_FILE"` and redirect stdout to `/dev/null`, **or** keep `-fdeps-file` pointing to a temp file and `mv`/`cp` it into `$DEPS_SCANNER_OUTPUT_FILE`.
- Avoid leaving large stdout output in the declared output file (currently it will be the preprocessor output).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. deps_scanner_wrapper.sh missing pipefail 📘 Rule violation ☼ Reliability
Description
The newly added CI/toolchain wrapper script uses set -eu but omits set -o pipefail, reducing
fail-safety if pipelines are introduced later or via refactors. This conflicts with the checklist
expectation for strict error handling in CI/automation scripts.
Code

common/remote-build/cc/deps_scanner_wrapper.sh[R1-6]

+#!/usr/bin/env bash
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
Evidence
PR Compliance ID 13 expects strict error handling in CI/automation scripts (example given: `set -euo
pipefail). The added script explicitly uses set -eu without pipefail`.

common/remote-build/cc/deps_scanner_wrapper.sh[1-6]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`common/remote-build/cc/deps_scanner_wrapper.sh` is an automation wrapper used by the C++ toolchain, but it does not enable `pipefail` as part of strict shell error handling.

## Issue Context
PR Compliance requires CI/automation scripts to be fail-safe and use strict error handling (e.g., `set -euo pipefail`). Even if the script currently has no pipelines, adding `pipefail` is the expected baseline and helps prevent future silent failures.

## Fix Focus Areas
- common/remote-build/cc/deps_scanner_wrapper.sh[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. Toolchain regen path brittle 🐞 Bug ☼ Reliability
Description
create-cc-toolchain-within-image.sh hard-codes the bzlmod extension repo directory name
(rules_cc++cc_configure_extension+local_config_cc) under output_base/external, which can change with
Bazel/module-resolution behavior and can break toolchain regeneration.
Code

scripts/remote-image/create-cc-toolchain-within-image.sh[R14-27]

+cat > MODULE.bazel <<'EOF'
+module(name = "ccregen")
+bazel_dep(name = "rules_cc", version = "0.2.18")
+cc_configure = use_extension("@rules_cc//cc:extensions.bzl", "cc_configure_extension")
+use_repo(cc_configure, "local_config_cc")
+EOF
+touch BUILD.bazel
+
bazel build @local_config_cc//...
+
+src="$(bazel info output_base)/external/rules_cc++cc_configure_extension+local_config_cc"
rm -rf /code/common/remote-build/cc
mkdir /code/common/remote-build/cc
-cp -Lr $(bazel info output_base)/external/local_config_cc/* /code/common/remote-build/cc
+cp -Lr "$src"/* /code/common/remote-build/cc
Evidence
The regeneration script explicitly downloads Bazelisk as /usr/bin/bazel, builds
@local_config_cc, then copies from a hard-coded
output_base/external/rules_cc++cc_configure_extension+local_config_cc path. The repo itself pins
Bazel 9.1.0 via .bazelversion, but the script’s temp workspace doesn’t include that file, so
Bazelisk can select a different Bazel version and/or produce different external repo naming/layout.

scripts/remote-image/create-cc-toolchain-within-image.sh[8-27]
.bazelversion[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The toolchain regeneration script copies `@local_config_cc` by assuming it lives at a specific path under `$(bazel info output_base)/external/<hard-coded-name>`. That `<hard-coded-name>` is derived from bzlmod/extension internals and is not a stable API.

Additionally, the script installs Bazelisk as `/usr/bin/bazel` and runs it from a fresh temp directory that does not contain the repo’s `.bazelversion`, meaning the Bazel version used for regeneration can silently drift.

### Issue Context
This script is used to regenerate `common/remote-build/cc` content inside the remote image build workflow.

### Fix Focus Areas
- scripts/remote-image/create-cc-toolchain-within-image.sh[8-27]
- .bazelversion[1-1]

### Suggested fix
1. Pin the Bazel version for regeneration:
  - Export `USE_BAZEL_VERSION=$(cat /code/.bazelversion)` before running `bazel`, **or** copy `/code/.bazelversion` into the temp dir.
2. Avoid hard-coded `output_base/external/...` paths:
  - Prefer a Bazel-provided query for the repository path (if available), e.g. `bazel info repository_path @local_config_cc`, then `cp -Lr "$(bazel info repository_path @local_config_cc)"/* ...`.
  - If `repository_path` isn’t available in your Bazel version, use another Bazel info/query mechanism that resolves `@local_config_cc` without relying on the canonical repo name string.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

9. deps_scanner_wrapper comments restate code 📘 Rule violation ⚙ Maintainability ⭐ New
Description
The added comments (e.g., # Call the C++ compiler) mainly restate the immediately-following
commands instead of documenting rationale/constraints. This reduces signal-to-noise for maintainers.
Code

common/remote-build/cc/deps_scanner_wrapper.sh[R2-12]

+#
+# Ship the environment to the C++ action
+#
+set -eu
+
+# Set-up the environment
+
+
+# Call the C++ compiler
+
+/usr/bin/gcc -E -x c++ -fmodules-ts -fdeps-file=out.tmp -fdeps-format=p1689r5 "$@" >"$DEPS_SCANNER_OUTPUT_FILE"
Evidence
Rule 7 requires comments to capture rationale, but the added comments in this new wrapper file
primarily narrate the code structure (Set-up the environment, Call the C++ compiler) without
adding intent or constraints.

AGENTS.md: Comments Should Explain Rationale (Why) Rather Than Restating Code (What)
common/remote-build/cc/deps_scanner_wrapper.sh[2-12]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Comments should explain rationale (why) rather than narrating obvious actions (what).

## Issue Context
In `deps_scanner_wrapper.sh`, several comments simply describe the next blank section/command.

## Fix Focus Areas
- common/remote-build/cc/deps_scanner_wrapper.sh[2-12]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Previous review results

Review updated until commit 4cba6dc

Results up to commit 072bc5e


🐞 Bugs (2) 📘 Rule violations (1) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Remediation recommended
1. Deps scanner output wrong 🐞 Bug ≡ Correctness
Description
deps_scanner_wrapper.sh redirects GCC preprocessor stdout to $DEPS_SCANNER_OUTPUT_FILE even though
GCC is configured to write the P1689 deps output to a separate file via -fdeps-file, so the
cpp_module_deps_scanning action’s declared output will contain the wrong data.
Code

common/remote-build/cc/deps_scanner_wrapper.sh[12]

+/usr/bin/gcc -E -x c++ -fmodules-ts -fdeps-file=out.tmp -fdeps-format=p1689r5 "$@" >"$DEPS_SCANNER_OUTPUT_FILE"
Evidence
The wrapper writes stdout from gcc -E to $DEPS_SCANNER_OUTPUT_FILE while separately instructing
GCC to write deps info to out.tmp, which is never copied. The toolchain config explicitly sets
DEPS_SCANNER_OUTPUT_FILE to the Bazel action output (%{output_file}), so Bazel will treat
whatever the wrapper writes there as the deps-scanner result.

common/remote-build/cc/deps_scanner_wrapper.sh[1-12]
common/remote-build/cc/cc_toolchain_config.bzl[594-607]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`deps_scanner_wrapper.sh` is intended to implement Bazel’s `cpp_module_deps_scanning` tool, but it currently writes *preprocessed source* (stdout from `gcc -E`) into the declared output file (`$DEPS_SCANNER_OUTPUT_FILE`). GCC writes the P1689 module deps data to the file specified by `-fdeps-file=...`, which is currently hard-coded to `out.tmp` and then ignored.

### Issue Context
Bazel sets `DEPS_SCANNER_OUTPUT_FILE` to the action’s `%{output_file}` for `ACTION_NAMES.cpp_module_deps_scanning`, so the wrapper must write the deps-scanner output into that file.

### Fix Focus Areas
- common/remote-build/cc/deps_scanner_wrapper.sh[1-12]
- common/remote-build/cc/cc_toolchain_config.bzl[594-607]

### Suggested fix
- Ensure the wrapper writes the P1689 output to `$DEPS_SCANNER_OUTPUT_FILE`, e.g.:
 - `: "${DEPS_SCANNER_OUTPUT_FILE:?}"`
 - run gcc with `-fdeps-file="$DEPS_SCANNER_OUTPUT_FILE"` and redirect stdout to `/dev/null`, **or** keep `-fdeps-file` pointing to a temp file and `mv`/`cp` it into `$DEPS_SCANNER_OUTPUT_FILE`.
- Avoid leaving large stdout output in the declared output file (currently it will be the preprocessor output).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. deps_scanner_wrapper.sh missing pipefail 📘 Rule violation ☼ Reliability
Description
The newly added CI/toolchain wrapper script uses set -eu but omits set -o pipefail, reducing
fail-safety if pipelines are introduced later or via refactors. This conflicts with the checklist
expectation for strict error handling in CI/automation scripts.
Code

common/remote-build/cc/deps_scanner_wrapper.sh[R1-6]

+#!/usr/bin/env bash
+#
+# Ship the environment to the C++ action
+#
+set -eu
+
Evidence
PR Compliance ID 13 expects strict error handling in CI/automation scripts (example given: `set -euo
pipefail). The added script explicitly uses set -eu without pipefail`.

common/remote-build/cc/deps_scanner_wrapper.sh[1-6]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`common/remote-build/cc/deps_scanner_wrapper.sh` is an automation wrapper used by the C++ toolchain, but it does not enable `pipefail` as part of strict shell error handling.

## Issue Context
PR Compliance requires CI/automation scripts to be fail-safe and use strict error handling (e.g., `set -euo pipefail`). Even if the script currently has no pipelines, adding `pipefail` is the expected baseline and helps prevent future silent failures.

## Fix Focus Areas
- common/remote-build/cc/deps_scanner_wrapper.sh[1-6]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Toolchain regen path brittle 🐞 Bug ☼ Reliability
Description
create-cc-toolchain-within-image.sh hard-codes the bzlmod extension repo directory name
(rules_cc++cc_configure_extension+local_config_cc) under output_base/external, which can change with
Bazel/module-resolution behavior and can break toolchain regeneration.
Code

scripts/remote-image/create-cc-toolchain-within-image.sh[R14-27]

+cat > MODULE.bazel <<'EOF'
+module(name = "ccregen")
+bazel_dep(name = "rules_cc", version = "0.2.18")
+cc_configure = use_extension("@rules_cc//cc:extensions.bzl", "cc_configure_extension")
+use_repo(cc_configure, "local_config_cc")
+EOF
+touch BUILD.bazel
+
bazel build @local_config_cc//...
+
+src="$(bazel info output_base)/external/rules_cc++cc_configure_extension+local_config_cc"
rm -rf /code/common/remote-build/cc
mkdir /code/common/remote-build/cc
-cp -Lr $(bazel info output_base)/external/local_config_cc/* /code/common/remote-build/cc
+cp -Lr "$src"/* /code/common/remote-build/cc
Evidence
The regeneration script explicitly downloads Bazelisk as /usr/bin/bazel, builds
@local_config_cc, then copies from a hard-coded
output_base/external/rules_cc++cc_configure_extension+local_config_cc path. The repo itself pins
Bazel 9.1.0 via .bazelversion, but the script’s temp workspace doesn’t include that file, so
Bazelisk can select a different Bazel version and/or produce different external repo naming/layout.

scripts/remote-image/create-cc-toolchain-within-image.sh[8-27]
.bazelversion[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The toolchain regeneration script copies `@local_config_cc` by assuming it lives at a specific path under `$(bazel info output_base)/external/<hard-coded-name>`. That `<hard-coded-name>` is derived from bzlmod/extension internals and is not a stable API.

Additionally, the script installs Bazelisk as `/usr/bin/bazel` and runs it from a fresh temp directory that does not contain the repo’s `.bazelversion`, meaning the Bazel version used for regeneration can silently drift.

### Issue Context
This script is used to regenerate `common/remote-build/cc` content inside the remote image build workflow.

### Fix Focus Areas
- scripts/remote-image/create-cc-toolchain-within-image.sh[8-27]
- .bazelversion[1-1]

### Suggested fix
1. Pin the Bazel version for regeneration:
  - Export `USE_BAZEL_VERSION=$(cat /code/.bazelversion)` before running `bazel`, **or** copy `/code/.bazelversion` into the temp dir.
2. Avoid hard-coded `output_base/external/...` paths:
  - Prefer a Bazel-provided query for the repository path (if available), e.g. `bazel info repository_path @local_config_cc`, then `cp -Lr "$(bazel info repository_path @local_config_cc)"/* ...`.
  - If `repository_path` isn’t available in your Bazel version, use another Bazel info/query mechanism that resolves `@local_config_cc` without relying on the canonical repo name string.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Results up to commit 7adbc4d


🐞 Bugs (1) 📘 Rule violations (1) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Action required
1. parse_option can exit wrapper 📘 Rule violation ☼ Reliability
Description
cc_wrapper.sh enables set -e but parse_option() can return a non-zero status for most
arguments, which can prematurely terminate the wrapper and break header parsing/compilation. This
violates the expectation that CI/automation scripts behave fail-safely with robust command handling.
Code

common/remote-build/cc/cc_wrapper.sh[R19-31]

set -eu

+OUTPUT=
+
+parse_option() {
+    opt=$1
+    if [ "$OUTPUT" = "1" ]; then
+        OUTPUT=$opt
+    elif [ "$opt" = "-o" ]; then
+        # output is coming
+        OUTPUT=1
+    fi
+}
Evidence
Rule 10 requires CI/automation scripts to handle external commands and preconditions safely. In
cc_wrapper.sh, set -eu is enabled and parse_option() may return the exit code of `[ "$opt" =
"-o" ] (often 1`), which can terminate the script unexpectedly when called from the argument loop.

common/remote-build/cc/cc_wrapper.sh[19-46]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`common/remote-build/cc/cc_wrapper.sh` uses `set -eu` and calls `parse_option` as a simple command. In POSIX `sh`, a function’s return status is the status of its last executed command; here that can be the `[ ... ]` test, which returns `1` for most args. With `set -e`, that non-zero return can abort the wrapper.

## Issue Context
This wrapper runs in build actions; unexpected early exits can cause flaky or consistently failing builds in RBE/CI.

## Fix Focus Areas
- common/remote-build/cc/cc_wrapper.sh[19-31]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended
2. Root-owned toolchain regen 🐞 Bug ☼ Reliability
Description
scripts/remote-image/create-cc-toolchain.sh now runs the generator container with --user 0 while
bind-mounting the repo, so the regeneration step writes root-owned files into the host checkout.
This can break subsequent builds/tests or any tooling that expects the working tree to be writable
by the invoking user.
Code

scripts/remote-image/create-cc-toolchain.sh[11]

+    --user 0 \
Evidence
The repo is bind-mounted into /code and the container is explicitly run as root, while the inner
script removes/recreates and copies into /code/common/remote-build/cc, so those new files will be
owned by root on the host filesystem.

scripts/remote-image/create-cc-toolchain.sh[7-14]
scripts/remote-image/create-cc-toolchain-within-image.sh[22-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`create-cc-toolchain.sh` bind-mounts the repo into `/code` and runs the container as root (`--user 0`). The inner script deletes/recreates `/code/common/remote-build/cc` and copies files there, which results in root-owned files on the host checkout.

### Issue Context
This is a developer/automation footgun: after running regeneration once, subsequent commands can fail with permission errors (e.g., when Bazel or git tries to update/remove those files).

### Fix Focus Areas
- scripts/remote-image/create-cc-toolchain.sh[7-14]

### Suggested fix
Change the docker invocation to run as the calling host user, e.g.:
- `--user "$(id -u):$(id -g)"`

If root is required for package installation inside the container, keep those steps in the Docker build layer and still run the regeneration entrypoint as the host UID/GID. As a fallback, add a `chown -R $(id -u):$(id -g) /code/common/remote-build/cc` step at the end of the inner script (but prefer matching UID/GID at runtime).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Qodo Logo

@qodo-code-review

qodo-code-review Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 7adbc4d

Comment on lines 19 to +31
set -eu

OUTPUT=

parse_option() {
opt=$1
if [ "$OUTPUT" = "1" ]; then
OUTPUT=$opt
elif [ "$opt" = "-o" ]; then
# output is coming
OUTPUT=1
fi
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. parse_option can exit wrapper 📘 Rule violation ☼ Reliability

cc_wrapper.sh enables set -e but parse_option() can return a non-zero status for most
arguments, which can prematurely terminate the wrapper and break header parsing/compilation. This
violates the expectation that CI/automation scripts behave fail-safely with robust command handling.
Agent Prompt
## Issue description
`common/remote-build/cc/cc_wrapper.sh` uses `set -eu` and calls `parse_option` as a simple command. In POSIX `sh`, a function’s return status is the status of its last executed command; here that can be the `[ ... ]` test, which returns `1` for most args. With `set -e`, that non-zero return can abort the wrapper.

## Issue Context
This wrapper runs in build actions; unexpected early exits can cause flaky or consistently failing builds in RBE/CI.

## Fix Focus Areas
- common/remote-build/cc/cc_wrapper.sh[19-31]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +27 to +42
cc_library(name = "empty_lib")

# Label flag for extra libraries to be linked into every binary.
label_flag(
name = "link_extra_libs",
build_setting_default = ":empty_lib",
)

# The final extra library to be linked into every binary target. This collects
# the above flag, but may also include more libraries depending on config.
cc_library(
name = "link_extra_lib",
deps = [
":link_extra_libs",
],
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Build setting in deps 🐞 Bug ≡ Correctness

//common/remote-build/cc:link_extra_lib is a cc_library that lists :link_extra_libs in deps,
but :link_extra_libs is a label_flag build setting rather than a C/C++ provider. This is likely
to fail analysis when building the generated toolchain repo (e.g., during `bazel build
@local_config_cc//...`).
Agent Prompt
## Issue description
`cc_library(name = "link_extra_lib")` depends directly on `:link_extra_libs`, but `:link_extra_libs` is a `label_flag` build setting (not a C/C++ library target). This wiring is very likely to break Bazel analysis for targets that evaluate `//common/remote-build/cc:link_extra_lib`.

## Issue Context
This directory is generated/copied as part of toolchain regeneration and is intended to be buildable.

## Fix Focus Areas
- common/remote-build/cc/BUILD[27-42]
- scripts/remote-image/create-cc-toolchain-within-image.sh[14-27]

## What to change
- Make `//common/remote-build/cc:link_extra_lib` depend only on real `cc_library` targets (e.g., `:empty_lib`) OR remove `link_extra_lib` entirely if unused.
- If the intent is to make a build-setting-controlled library available to toolchain logic, implement an explicit Starlark rule/macro that reads the build setting value and forwards the referenced target’s `CcInfo` (instead of placing the `label_flag` target itself in `deps`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 4cba6dc

@qodo-code-review

Copy link
Copy Markdown
Contributor

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: Test / All RBE tests

Failed stage: Rerun failures with debug [❌]

Failed test name: ""

Failure summary:

The GitHub Action failed because the Bazel test run finished with non-zero status (exit code 3)
after multiple test targets failed (final summary: 7 tests FAILED).

The failures shown in the log include:

- Ruby RSpec integration tests for Firefox (multiple Bazel targets):
-
//rb/spec/integration/selenium/webdriver:driver-firefox
-
//rb/spec/integration/selenium/webdriver:driver-firefox-beta
-
//rb/spec/integration/selenium/webdriver:driver-firefox-remote
-
//rb/spec/integration/selenium/webdriver:driver-firefox-beta-remote
- All fail due to the same
assertion in ./rb/spec/integration/selenium/webdriver/driver_spec.rb:
- Example:
Selenium::WebDriver::Driver many elements finds above another
- Failure at driver_spec.rb:181
(failed example at driver_spec.rb:177)
- The expected element id order was ["top", "topLeft",
"topRight"] but the actual order returned was ["top", "topRight", "topLeft"].

- JavaScript atoms Closure/QUnit test suites failing consistently (failed in 2 out of 2 runs):
-
//javascript/atoms:closure-test
- //javascript/atoms:closure-test-firefox-beta
- Failure is
javascript/atoms/test/relative_locator_test (org.openqa.selenium.javascript.ClosureTestSuite)
because QUnit reports Failed: 2 tests.
- The detailed mismatches show relative-locator ordering
swaps (e.g., in relative_locator_test.html around lines 124-134, shouldFindElementsBelowAnother
expects bottomLeft/bottomRight but gets them swapped).

- Python remote hub connection tests failing (failed in 2 out of 2 runs):
-
//py:test/selenium/webdriver/remote/remote_hub_connection_tests-chrome-remote
- The test
py/test/selenium/webdriver/remote/remote_hub_connection_tests.py::test_command_executor_ssl_certificate_is_verified
fails because it expects a urllib3.exceptions.MaxRetryError whose reason is an
urllib3.exceptions.SSLError, but instead the run ends with urllib3.exceptions.ProtocolError:
('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) while connecting to
https://wrong.host.badssl.com/.

- Additional flaky failures were observed (marked FLAKY in Bazel), including:
-
//py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi timing out with
WebDriverException: Timed out waiting for response to BiDi command 56 (from
py/selenium/webdriver/remote/websocket_connection.py:133), but the overall action failure is driven
by the tests that remained failed after retries.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

1311:  (18:51:43) �[32m[17,663 / 22,284]�[0m 50 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/w3c_interaction_tests-firefox-actions; 120s remote, remote-cache ... (50 actions, 27 running)
1312:  (18:51:49) �[32m[17,669 / 22,287]�[0m 52 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/w3c_interaction_tests-firefox-actions; 125s remote, remote-cache ... (50 actions, 26 running)
1313:  (18:51:54) �[32m[17,696 / 22,297]�[0m 57 / 3182 tests;�[0m Compiling webdriver; 100s remote, remote-cache ... (50 actions, 29 running)
1314:  (18:51:55) �[32mINFO: �[0mFrom Checking 1 JS files in @@//third_party/closure/goog/events:browserfeature:
1315:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
1316:  WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.google.protobuf.UnsafeUtil$MemoryAccessor (file:/mnt/engflow/worker/work/1/exec/bazel-out/platform-opt-exec/bin/external/rules_closure+/java/io/bazel/rules/closure/ClosureWorker.runfiles/protobuf+/java/core/liblite_runtime_only.jar)
1317:  WARNING: Please consider reporting this to the maintainers of class com.google.protobuf.UnsafeUtil$MemoryAccessor
1318:  WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
1319:  (18:51:58) �[32mINFO: �[0mFrom Checking 1 JS files in @@//third_party/closure/goog/flags:flags:
1320:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
1321:  WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.google.protobuf.UnsafeUtil$MemoryAccessor (file:/mnt/engflow/worker/work/0/exec/bazel-out/platform-opt-exec/bin/external/rules_closure+/java/io/bazel/rules/closure/ClosureWorker.runfiles/protobuf+/java/core/liblite_runtime_only.jar)
1322:  WARNING: Please consider reporting this to the maintainers of class com.google.protobuf.UnsafeUtil$MemoryAccessor
1323:  WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
1324:  (18:51:59) �[32m[17,702 / 22,297]�[0m 59 / 3182 tests;�[0m Compiling webdriver; 105s remote, remote-cache ... (50 actions, 28 running)
1325:  (18:52:04) �[32m[17,706 / 22,297]�[0m 61 / 3182 tests;�[0m Compiling webdriver; 110s remote, remote-cache ... (50 actions, 31 running)
1326:  (18:52:10) �[32mINFO: �[0mFrom Checking 1 JS files in @@//third_party/closure/goog/debug:errorcontext:
1327:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
...

1475:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
1476:  java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java:576: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
1477:  public <T> CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
1478:  ^
1479:  where T is a type-variable:
1480:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
1481:  (18:55:06) �[32m[18,363 / 22,649]�[0m 150 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 254s remote, remote-cache ... (50 actions, 43 running)
1482:  (18:55:08) �[32mINFO: �[0mFrom Checking 2 JS files in @@//third_party/closure/goog/events:event:
1483:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
1484:  WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.google.protobuf.UnsafeUtil$MemoryAccessor (file:/mnt/engflow/worker/work/1/exec/bazel-out/platform-opt-exec/bin/external/rules_closure+/java/io/bazel/rules/closure/ClosureWorker.runfiles/protobuf+/java/core/liblite_runtime_only.jar)
1485:  WARNING: Please consider reporting this to the maintainers of class com.google.protobuf.UnsafeUtil$MemoryAccessor
1486:  WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
1487:  (18:55:11) �[32m[18,367 / 22,649]�[0m 152 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 259s remote, remote-cache ... (50 actions, 46 running)
1488:  (18:55:16) �[32m[18,376 / 22,650]�[0m 159 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 264s remote, remote-cache ... (50 actions, 44 running)
1489:  (18:55:21) �[32m[18,381 / 22,650]�[0m 163 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 269s remote, remote-cache ... (50 actions running)
1490:  (18:55:23) �[32mINFO: �[0mFrom Checking 2 JS files in @@//javascript/atoms:errors:
1491:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
1492:  WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by com.google.protobuf.UnsafeUtil$MemoryAccessor (file:/mnt/engflow/worker/work/1/exec/bazel-out/platform-opt-exec/bin/external/rules_closure+/java/io/bazel/rules/closure/ClosureWorker.runfiles/protobuf+/java/core/liblite_runtime_only.jar)
1493:  WARNING: Please consider reporting this to the maintainers of class com.google.protobuf.UnsafeUtil$MemoryAccessor
1494:  WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
1495:  (18:55:26) �[32m[18,393 / 22,650]�[0m 171 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 274s remote, remote-cache ... (50 actions, 47 running)
1496:  (18:55:31) �[32m[18,395 / 22,650]�[0m 173 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_emulation_tests-firefox-bidi; 279s remote, remote-cache ... (50 actions, 49 running)
1497:  (18:55:32) �[32mINFO: �[0mFrom Checking 1 JS files in @@//third_party/closure/goog/debug:error:
1498:  WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
...

2022:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
2023:  (19:03:58) �[32m[19,461 / 22,803]�[0m 671 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 578s remote, remote-cache ... (50 actions, 48 running)
2024:  (19:04:03) �[32m[19,465 / 22,804]�[0m 672 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 583s remote, remote-cache ... (50 actions running)
2025:  (19:04:06) �[32mINFO: �[0mFrom Compiling Rust bin //rust/tests:integration_iexplorer_tests_test (2 files):
2026:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: the gold linker is deprecated and has known bugs with Rust�[0m
2027:  �[0m  �[0m�[0m�[1m�[38;5;12m|�[0m
2028:  �[0m  �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mhelp�[0m�[0m: consider using LLD or ld from GNU binutils instead�[0m
2029:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
2030:  (19:04:08) �[32m[19,472 / 22,804]�[0m 676 / 3182 tests;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 588s remote, remote-cache ... (50 actions, 49 running)
2031:  (19:04:09) �[32mINFO: �[0mFrom Compiling Rust bin //rust/tests:integration_grid_tests_test (2 files):
2032:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: the gold linker is deprecated and has known bugs with Rust�[0m
2033:  �[0m  �[0m�[0m�[1m�[38;5;12m|�[0m
2034:  �[0m  �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mhelp�[0m�[0m: consider using LLD or ld from GNU binutils instead�[0m
2035:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
2036:  (19:04:10) �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:driver-firefox-beta (Exit 1) (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-firefox-beta/test.log)
2037:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:driver-firefox-beta (Summary)
2038:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-firefox-beta/test.log
...

2061:  finds by class name
2062:  finds by link text
2063:  finds by xpath
2064:  finds by css selector
2065:  finds by tag name
2066:  finds above another
2067:  finds child element
2068:  finds child element by tag name
2069:  finds elements with the shortcut syntax
2070:  raises if element not found
2071:  raises if invalid locator
2072:  many elements
2073:  finds by class name
2074:  finds by css selector
2075:  finds above element
2076:  finds above another (FAILED - 1)
2077:  finds below element
...

2093:  is able to call functions on the page
2094:  is able to pass string arguments
2095:  is able to pass boolean arguments
2096:  is able to pass numeric arguments
2097:  is able to pass null arguments
2098:  is able to pass array arguments
2099:  is able to pass element arguments
2100:  is able to pass in multiple arguments
2101:  execute async script
2102:  is able to return arrays of primitives from async scripts
2103:  is able to pass multiple arguments to async scripts
2104:  times out if the callback is not invoked
2105:  Pending: (Failures listed here are expected and do not affect your suite's status)
2106:  1) Selenium::WebDriver::Driver behaves like driver that can be started concurrently starts multiple drivers sequentially
2107:  # No reason given
2108:  Failure/Error: raise SkipDeclaredInExample.new(message)
2109:  RSpec::Core::Pending::SkipDeclaredInExample
2110:  Shared Example Group: "driver that can be started concurrently" called from ./rb/spec/integration/selenium/webdriver/driver_spec.rb:27
2111:  # ./rb/spec/integration/selenium/webdriver/spec_support/shared_examples/concurrent_driver.rb:27:in `block (2 levels) in <top (required)>'
2112:  Failures:
2113:  1) Selenium::WebDriver::Driver many elements finds above another
2114:  Failure/Error: expect(above.map { |e| e.attribute('id') }).to eq(%w[top topLeft topRight])
2115:  expected: ["top", "topLeft", "topRight"]
2116:  got: ["top", "topRight", "topLeft"]
2117:  (compared using ==)
2118:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:181:in `block (3 levels) in <module:WebDriver>'
2119:  Finished in 30.04 seconds (files took 0.61174 seconds to load)
2120:  49 examples, 1 failure, 1 pending
2121:  Failed examples:
2122:  rspec ./rb/spec/integration/selenium/webdriver/driver_spec.rb:177 # Selenium::WebDriver::Driver many elements finds above another
...

2145:  finds by class name
2146:  finds by link text
2147:  finds by xpath
2148:  finds by css selector
2149:  finds by tag name
2150:  finds above another
2151:  finds child element
2152:  finds child element by tag name
2153:  finds elements with the shortcut syntax
2154:  raises if element not found
2155:  raises if invalid locator
2156:  many elements
2157:  finds by class name
2158:  finds by css selector
2159:  finds above element
2160:  finds above another (FAILED - 1)
2161:  finds below element
...

2177:  is able to call functions on the page
2178:  is able to pass string arguments
2179:  is able to pass boolean arguments
2180:  is able to pass numeric arguments
2181:  is able to pass null arguments
2182:  is able to pass array arguments
2183:  is able to pass element arguments
2184:  is able to pass in multiple arguments
2185:  execute async script
2186:  is able to return arrays of primitives from async scripts
2187:  is able to pass multiple arguments to async scripts
2188:  times out if the callback is not invoked
2189:  Pending: (Failures listed here are expected and do not affect your suite's status)
2190:  1) Selenium::WebDriver::Driver behaves like driver that can be started concurrently starts multiple drivers sequentially
2191:  # No reason given
2192:  Failure/Error: raise SkipDeclaredInExample.new(message)
2193:  RSpec::Core::Pending::SkipDeclaredInExample
2194:  Shared Example Group: "driver that can be started concurrently" called from ./rb/spec/integration/selenium/webdriver/driver_spec.rb:27
2195:  # ./rb/spec/integration/selenium/webdriver/spec_support/shared_examples/concurrent_driver.rb:27:in `block (2 levels) in <top (required)>'
2196:  Failures:
2197:  1) Selenium::WebDriver::Driver many elements finds above another
2198:  Failure/Error: expect(above.map { |e| e.attribute('id') }).to eq(%w[top topLeft topRight])
2199:  expected: ["top", "topLeft", "topRight"]
2200:  got: ["top", "topRight", "topLeft"]
2201:  (compared using ==)
2202:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:181:in `block (3 levels) in <module:WebDriver>'
2203:  Finished in 30.01 seconds (files took 0.58281 seconds to load)
2204:  49 examples, 1 failure, 1 pending
2205:  Failed examples:
2206:  rspec ./rb/spec/integration/selenium/webdriver/driver_spec.rb:177 # Selenium::WebDriver::Driver many elements finds above another
2207:  Remote server execution message: Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChADj98PkBlVZaI3NVjxiAZSEgdkZWZhdWx0GiUKIMf0aK7qF-btwmzyS7-GPzyHgRyw4dJXmtioJfep4sDJELwD
2208:  ================================================================================
2209:  (19:04:13) �[32m[19,482 / 22,805]�[0m 683 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 593s remote, remote-cache ... (50 actions, 49 running)
2210:  (19:04:15) �[32mINFO: �[0mFrom Compiling Rust bin //rust:selenium-manager v0.4.46-nightly (1 file):
2211:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: the gold linker is deprecated and has known bugs with Rust�[0m
2212:  �[0m  �[0m�[0m�[1m�[38;5;12m|�[0m
2213:  �[0m  �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mhelp�[0m�[0m: consider using LLD or ld from GNU binutils instead�[0m
2214:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
2215:  (19:04:18) �[32m[19,508 / 22,819]�[0m 689 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 598s remote, remote-cache ... (50 actions, 48 running)
2216:  (19:04:23) �[32m[19,523 / 22,827]�[0m 695 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 603s remote, remote-cache ... (50 actions, 47 running)
2217:  (19:04:27) �[32mINFO: �[0mFrom Compiling Rust bin //rust/tests:integration_proxy_tests_test (2 files):
2218:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: the gold linker is deprecated and has known bugs with Rust�[0m
2219:  �[0m  �[0m�[0m�[1m�[38;5;12m|�[0m
2220:  �[0m  �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mhelp�[0m�[0m: consider using LLD or ld from GNU binutils instead�[0m
2221:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
2222:  (19:04:28) �[32m[19,529 / 22,828]�[0m 699 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 608s remote, remote-cache ... (50 actions, 49 running)
2223:  (19:04:34) �[32m[19,533 / 22,830]�[0m 702 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 614s remote, remote-cache ... (50 actions running)
2224:  (19:04:39) �[32m[19,538 / 22,831]�[0m 706 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 619s remote, remote-cache ... (50 actions running)
2225:  (19:04:44) �[32m[19,555 / 22,838]�[0m 711 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 624s remote, remote-cache ... (50 actions, 48 running)
2226:  (19:04:49) �[32m[19,570 / 22,840]�[0m 723 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 629s remote, remote-cache ... (50 actions, 46 running)
2227:  (19:04:54) �[32m[19,578 / 22,842]�[0m 729 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 634s remote, remote-cache ... (50 actions running)
2228:  (19:04:59) �[32m[19,590 / 22,845]�[0m 736 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi; 639s remote, remote-cache ... (50 actions running)
2229:  �[35mFLAKY: �[0m//py:test/selenium/webdriver/common/bidi_network_tests-chrome-bidi (Summary)
...

2249:  │ /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild/bin/py/test/selenium/webdriver/common/bidi_network_tests-chrome-bidi.ru │
2250:  │ nfiles/_main/py/test/selenium/webdriver/common/bidi_network_tests.py:123 in test_handler_with_classic_navigation               │
2251:  │                                                                                                                                │
2252:  │   120 │   """Verify request handlers also work with classic navigation."""                                                     │
2253:  │   121 │   browser_name = driver.caps["browserName"]                                                                            │
2254:  │   122 │   if browser_name.lower() in ("chrome", "microsoftedge"):                                                              │
2255:  │ ❱ 123 │   │   pytest.skip(reason=f"Request handlers don't yet work in {browser_name} using cla                                 │
2256:  │   124 │                                                                                                                        │
2257:  │   125 │   exceptions = []                                                                                                      │
2258:  │   126                                                                                                                          │
2259:  ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
2260:  Skipped: Request handlers don't yet work in chrome using classic navigation
2261:  SKIPPED
2262:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_handler_with_data_url_request[chrome] PASSED
2263:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_listen_to_requests_without_modifying[chrome] PASSED
2264:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_fail_requests_matching_url_pattern[chrome] PASSED
2265:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_provide_stubbed_response[chrome] PASSED
2266:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_change_request_headers[chrome] PASSED
2267:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_change_request_url[chrome] PASSED
2268:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_fail_wins_when_multiple_handlers_disagree[chrome] PASSED
2269:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_url_patterns_scope_handlers[chrome] Timeout (0:01:00)!
...

2367:  │   624 │   │   cmd = command_builder("browsingContext.navigate", params)                                                        │
2368:  │ ❱ 625 │   │   result = self._conn.execute(cmd)                                                                                 │
2369:  │   626 │   │   return result                                                                                                    │
2370:  │   627 │                                                                                                                        │
2371:  │   628 │   def print(                                                                                                           │
2372:  │                                                                                                                                │
2373:  │ /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild/bin/py/test/selenium/webdriver/common/bidi_network_tests-chrome-bidi.ru │
2374:  │ nfiles/_main/py/selenium/webdriver/remote/websocket_connection.py:133 in execute                                               │
2375:  │                                                                                                                                │
2376:  │   130 │   │                                                                                                                    │
2377:  │   131 │   │   self._wait_until(lambda: current_id in self._messages)                                                           │
2378:  │   132 │   │   if current_id not in self._messages:                                                                             │
2379:  │ ❱ 133 │   │   │   raise WebDriverException(f"Timed out waiting for response to BiDi command {c                                 │
2380:  │   134 │   │   response = self._messages.pop(current_id)                                                                        │
2381:  │   135 │   │                                                                                                                    │
2382:  │   136 │   │   if "error" in response:                                                                                          │
2383:  ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
...

2416:  │    722 │   │                                                                                                                   │
2417:  │ ❱  723 │   │   self._conn.execute(_cb("network.removeIntercept", {"intercept": intercept_id}))                                 │
2418:  │    724 │   │   if intercept_id in self.intercepts:                                                                             │
2419:  │    725 │   │   │   self.intercepts.remove(intercept_id)                                                                        │
2420:  │    726 │   def _canonical_request_handler_event(self, event):                                                                  │
2421:  │                                                                                                                                │
2422:  │ /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild/bin/py/test/selenium/webdriver/common/bidi_network_tests-chrome-bidi.ru │
2423:  │ nfiles/_main/py/selenium/webdriver/remote/websocket_connection.py:133 in execute                                               │
2424:  │                                                                                                                                │
2425:  │   130 │   │                                                                                                                    │
2426:  │   131 │   │   self._wait_until(lambda: current_id in self._messages)                                                           │
2427:  │   132 │   │   if current_id not in self._messages:                                                                             │
2428:  │ ❱ 133 │   │   │   raise WebDriverException(f"Timed out waiting for response to BiDi command {c                                 │
2429:  │   134 │   │   response = self._messages.pop(current_id)                                                                        │
2430:  │   135 │   │                                                                                                                    │
2431:  │   136 │   │   if "error" in response:                                                                                          │
2432:  ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
2433:  WebDriverException: Message: Timed out waiting for response to BiDi command 56
2434:  FAILED
2435:  ------------------------------ live log logreport ------------------------------
2436:  WARNING  urllib3.connectionpool:connectionpool.py:869 Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPConnectionPool(host='localhost', port=39887): Read timed out. (read timeout=120)")': /session/dc23653124e560c16522a2a809cce7dd
2437:  WARNING  urllib3.connectionpool:connectionpool.py:869 Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPConnectionPool(host='localhost', port=39887): Read timed out. (read timeout=120)")': /session/dc23653124e560c16522a2a809cce7dd
2438:  WARNING  urllib3.connectionpool:connectionpool.py:869 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPConnectionPool(host='localhost', port=39887): Read timed out. (read timeout=120)")': /session/dc23653124e560c16522a2a809cce7dd
2439:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_remove_handler_by_id_stops_observation[chrome] PASSED
2440:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_listen_to_responses_without_modifying[chrome] PASSED
2441:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_change_response_headers[chrome] PASSED
2442:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_change_response_body[chrome] PASSED
2443:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_response_url_patterns_scope_handlers[chrome] PASSED
2444:  py/test/selenium/webdriver/common/bidi_network_tests.py::test_remove_response_handler_by_id_stops_observation[chrome] -- Test timed out at 2026-06-16 19:04:23 UTC --
2445:  Remote server execution message: Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAQ8Ub9-l1VJI1uz0DWuuAUEgdkZWZhdWx0GiUKIAD3ydjRfkhRpMjQhb93pf1TYDYThklKAcOzyQuIlSxFELwD
2446:  ================================================================================
2447:  (19:05:04) �[32m[19,598 / 22,845]�[0m 743 / 3182 tests, �[31m�[1m1 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 358s remote, remote-cache ... (50 actions, 49 running)
2448:  (19:05:07) �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:driver-firefox (Exit 1) (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-firefox/test.log)
2449:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:driver-firefox (Summary)
2450:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-firefox/test.log
...

2473:  finds by class name
2474:  finds by link text
2475:  finds by xpath
2476:  finds by css selector
2477:  finds by tag name
2478:  finds above another
2479:  finds child element
2480:  finds child element by tag name
2481:  finds elements with the shortcut syntax
2482:  raises if element not found
2483:  raises if invalid locator
2484:  many elements
2485:  finds by class name
2486:  finds by css selector
2487:  finds above element
2488:  finds above another (FAILED - 1)
2489:  finds below element
...

2505:  is able to call functions on the page
2506:  is able to pass string arguments
2507:  is able to pass boolean arguments
2508:  is able to pass numeric arguments
2509:  is able to pass null arguments
2510:  is able to pass array arguments
2511:  is able to pass element arguments
2512:  is able to pass in multiple arguments
2513:  execute async script
2514:  is able to return arrays of primitives from async scripts
2515:  is able to pass multiple arguments to async scripts
2516:  times out if the callback is not invoked
2517:  Pending: (Failures listed here are expected and do not affect your suite's status)
2518:  1) Selenium::WebDriver::Driver behaves like driver that can be started concurrently starts multiple drivers sequentially
2519:  # No reason given
2520:  Failure/Error: raise SkipDeclaredInExample.new(message)
2521:  RSpec::Core::Pending::SkipDeclaredInExample
2522:  Shared Example Group: "driver that can be started concurrently" called from ./rb/spec/integration/selenium/webdriver/driver_spec.rb:27
2523:  # ./rb/spec/integration/selenium/webdriver/spec_support/shared_examples/concurrent_driver.rb:27:in `block (2 levels) in <top (required)>'
2524:  Failures:
2525:  1) Selenium::WebDriver::Driver many elements finds above another
2526:  Failure/Error: expect(above.map { |e| e.attribute('id') }).to eq(%w[top topLeft topRight])
2527:  expected: ["top", "topLeft", "topRight"]
2528:  got: ["top", "topRight", "topLeft"]
2529:  (compared using ==)
2530:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:181:in `block (3 levels) in <module:WebDriver>'
2531:  Finished in 30.47 seconds (files took 0.622 seconds to load)
2532:  49 examples, 1 failure, 1 pending
2533:  Failed examples:
2534:  rspec ./rb/spec/integration/selenium/webdriver/driver_spec.rb:177 # Selenium::WebDriver::Driver many elements finds above another
...

2557:  finds by class name
2558:  finds by link text
2559:  finds by xpath
2560:  finds by css selector
2561:  finds by tag name
2562:  finds above another
2563:  finds child element
2564:  finds child element by tag name
2565:  finds elements with the shortcut syntax
2566:  raises if element not found
2567:  raises if invalid locator
2568:  many elements
2569:  finds by class name
2570:  finds by css selector
2571:  finds above element
2572:  finds above another (FAILED - 1)
2573:  finds below element
...

2589:  is able to call functions on the page
2590:  is able to pass string arguments
2591:  is able to pass boolean arguments
2592:  is able to pass numeric arguments
2593:  is able to pass null arguments
2594:  is able to pass array arguments
2595:  is able to pass element arguments
2596:  is able to pass in multiple arguments
2597:  execute async script
2598:  is able to return arrays of primitives from async scripts
2599:  is able to pass multiple arguments to async scripts
2600:  times out if the callback is not invoked
2601:  Pending: (Failures listed here are expected and do not affect your suite's status)
2602:  1) Selenium::WebDriver::Driver behaves like driver that can be started concurrently starts multiple drivers sequentially
2603:  # No reason given
2604:  Failure/Error: raise SkipDeclaredInExample.new(message)
2605:  RSpec::Core::Pending::SkipDeclaredInExample
2606:  Shared Example Group: "driver that can be started concurrently" called from ./rb/spec/integration/selenium/webdriver/driver_spec.rb:27
2607:  # ./rb/spec/integration/selenium/webdriver/spec_support/shared_examples/concurrent_driver.rb:27:in `block (2 levels) in <top (required)>'
2608:  Failures:
2609:  1) Selenium::WebDriver::Driver many elements finds above another
2610:  Failure/Error: expect(above.map { |e| e.attribute('id') }).to eq(%w[top topLeft topRight])
2611:  expected: ["top", "topLeft", "topRight"]
2612:  got: ["top", "topRight", "topLeft"]
2613:  (compared using ==)
2614:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:181:in `block (3 levels) in <module:WebDriver>'
2615:  Finished in 1 minute 6.13 seconds (files took 1.65 seconds to load)
2616:  49 examples, 1 failure, 1 pending
2617:  Failed examples:
2618:  rspec ./rb/spec/integration/selenium/webdriver/driver_spec.rb:177 # Selenium::WebDriver::Driver many elements finds above another
2619:  Remote server execution message: Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChDhTT2VbfRe76uk-lMMcJOtEgdkZWZhdWx0GiUKINLaI3EAe0bz9wyCg6lAk1PhpjCj5qf3OmGR_wmkNNk6ELwD
2620:  ================================================================================
2621:  (19:05:09) �[32m[19,608 / 22,848]�[0m 749 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 363s remote, remote-cache ... (50 actions, 47 running)
2622:  (19:05:14) �[32m[19,613 / 22,848]�[0m 754 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 368s remote, remote-cache ... (50 actions, 49 running)
2623:  (19:05:20) �[32m[19,616 / 22,848]�[0m 758 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 373s remote, remote-cache ... (50 actions running)
2624:  (19:05:25) �[32m[19,627 / 22,852]�[0m 763 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 378s remote, remote-cache ... (50 actions, 49 running)
2625:  (19:05:30) �[32m[19,635 / 22,853]�[0m 768 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 383s remote, remote-cache ... (50 actions running)
2626:  (19:05:35) �[32m[19,644 / 22,855]�[0m 775 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 389s remote, remote-cache ... (50 actions, 48 running)
2627:  (19:05:41) �[32m[19,652 / 22,857]�[0m 779 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-log-inspector-test.js-firefox; 394s remote, remote-cache ... (50 actions, 49 running)
2628:  (19:05:46) �[32m[19,666 / 22,860]�[0m 788 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 283s remote, remote-cache ... (50 actions, 49 running)
2629:  (19:05:51) �[32m[19,674 / 22,862]�[0m 793 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 288s remote, remote-cache ... (50 actions, 49 running)
2630:  (19:05:56) �[32m[19,686 / 22,863]�[0m 803 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 293s remote, remote-cache ... (50 actions, 48 running)
2631:  (19:06:01) �[32m[19,692 / 22,863]�[0m 809 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 299s remote, remote-cache ... (50 actions running)
2632:  (19:06:06) �[32m[19,704 / 22,866]�[0m 816 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 304s remote, remote-cache ... (50 actions running)
2633:  (19:06:11) �[32m[19,715 / 22,867]�[0m 825 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 309s remote, remote-cache ... (50 actions, 49 running)
2634:  (19:06:16) �[32m[19,725 / 22,869]�[0m 831 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 314s remote, remote-cache ... (50 actions, 48 running)
2635:  (19:06:22) �[32m[19,735 / 22,870]�[0m 840 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 319s remote, remote-cache ... (50 actions, 49 running)
2636:  (19:06:27) �[32m[19,748 / 22,872]�[0m 848 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 324s remote, remote-cache ... (50 actions running)
2637:  (19:06:32) �[32m[19,757 / 22,875]�[0m 854 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 329s remote, remote-cache ... (50 actions, 49 running)
2638:  (19:06:37) �[32m[19,767 / 22,876]�[0m 861 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 334s remote, remote-cache ... (50 actions, 47 running)
2639:  (19:06:42) �[32m[19,775 / 22,877]�[0m 868 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 340s remote, remote-cache ... (50 actions, 49 running)
2640:  (19:06:47) �[32m[19,784 / 22,878]�[0m 873 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 345s remote, remote-cache ... (50 actions, 49 running)
2641:  (19:06:52) �[32m[19,793 / 22,880]�[0m 880 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 350s remote, remote-cache ... (50 actions, 49 running)
2642:  (19:06:57) �[32m[19,802 / 22,881]�[0m 886 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 355s remote, remote-cache ... (50 actions, 49 running)
2643:  (19:07:03) �[32m[19,815 / 22,885]�[0m 893 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 360s remote, remote-cache ... (50 actions, 48 running)
2644:  (19:07:08) �[32m[19,819 / 22,885]�[0m 897 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 365s remote, remote-cache ... (50 actions running)
2645:  (19:07:13) �[32m[19,831 / 22,887]�[0m 907 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 370s remote, remote-cache ... (50 actions, 49 running)
2646:  (19:07:18) �[32m[19,839 / 22,888]�[0m 911 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 375s remote, remote-cache ... (50 actions, 47 running)
2647:  (19:07:22) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/router/DirectForwardingListenerTest.jar (1 source file):
2648:  java/test/org/openqa/selenium/grid/router/DirectForwardingListenerTest.java:149: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2649:  public <T> java.net.http.HttpResponse<T> sendNative(
2650:  ^
2651:  where T is a type-variable:
2652:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2653:  java/test/org/openqa/selenium/grid/router/DirectForwardingListenerTest.java:143: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2654:  java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2655:  ^
2656:  where T is a type-variable:
2657:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2658:  (19:07:23) �[32m[19,850 / 22,891]�[0m 919 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 380s remote, remote-cache ... (50 actions running)
2659:  (19:07:28) �[32m[19,853 / 22,891]�[0m 921 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 386s remote, remote-cache ... (50 actions running)
2660:  (19:07:33) �[32m[19,861 / 22,891]�[0m 929 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 391s remote, remote-cache ... (50 actions, 47 running)
2661:  (19:07:38) �[32m[19,873 / 22,894]�[0m 937 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 396s remote, remote-cache ... (50 actions, 48 running)
2662:  (19:07:43) �[32m[19,885 / 22,895]�[0m 946 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 401s remote, remote-cache ... (50 actions, 49 running)
2663:  (19:07:48) �[32m[19,897 / 22,897]�[0m 956 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 406s remote, remote-cache ... (50 actions, 49 running)
2664:  (19:07:53) �[32m[19,912 / 22,898]�[0m 968 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 411s remote, remote-cache ... (50 actions, 47 running)
2665:  (19:07:58) �[32m[19,925 / 22,900]�[0m 978 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 416s remote, remote-cache ... (50 actions running)
2666:  (19:08:03) �[32m[19,935 / 22,901]�[0m 985 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 421s remote, remote-cache ... (50 actions, 49 running)
2667:  (19:08:08) �[32m[19,948 / 22,904]�[0m 994 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 426s remote, remote-cache ... (50 actions running)
2668:  (19:08:14) �[32m[19,961 / 22,906]�[0m 1003 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 431s remote, remote-cache ... (50 actions, 48 running)
2669:  (19:08:19) �[32m[19,975 / 22,908]�[0m 1014 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 436s remote, remote-cache ... (50 actions running)
2670:  (19:08:24) �[32m[19,987 / 22,909]�[0m 1024 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 442s remote, remote-cache ... (50 actions, 49 running)
2671:  (19:08:29) �[32m[19,997 / 22,909]�[0m 1034 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 447s remote, remote-cache ... (50 actions, 49 running)
2672:  (19:08:34) �[32m[20,014 / 22,911]�[0m 1047 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 452s remote, remote-cache ... (50 actions, 48 running)
2673:  (19:08:39) �[32m[20,040 / 22,913]�[0m 1070 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 457s remote, remote-cache ... (50 actions, 46 running)
2674:  (19:08:44) �[32m[20,051 / 22,915]�[0m 1077 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 462s remote, remote-cache ... (50 actions, 48 running)
2675:  (19:08:50) �[32m[20,062 / 22,917]�[0m 1086 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 467s remote, remote-cache ... (50 actions running)
2676:  (19:08:55) �[32m[20,080 / 22,919]�[0m 1099 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 472s remote, remote-cache ... (50 actions, 47 running)
2677:  (19:09:00) �[32m[20,097 / 22,921]�[0m 1113 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 478s remote, remote-cache ... (50 actions, 48 running)
2678:  (19:09:05) �[32m[20,109 / 22,923]�[0m 1122 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 483s remote, remote-cache ... (50 actions, 49 running)
2679:  (19:09:10) �[32m[20,122 / 22,925]�[0m 1131 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 488s remote, remote-cache ... (50 actions, 49 running)
2680:  (19:09:13) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/testing/libtesting.jar (4 source files):
2681:  java/test/org/openqa/selenium/grid/testing/PassthroughHttpClient.java:58: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2682:  public <T> java.net.http.HttpResponse<T> sendNative(
2683:  ^
2684:  where T is a type-variable:
2685:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2686:  java/test/org/openqa/selenium/grid/testing/PassthroughHttpClient.java:52: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2687:  public <T> java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2688:  ^
2689:  where T is a type-variable:
2690:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2691:  (19:09:16) �[32m[20,141 / 22,929]�[0m 1143 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 493s remote, remote-cache ... (50 actions running)
2692:  (19:09:21) �[32m[20,153 / 22,931]�[0m 1151 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 498s remote, remote-cache ... (50 actions, 48 running)
2693:  (19:09:26) �[32m[20,187 / 22,947]�[0m 1160 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 503s remote, remote-cache ... (50 actions, 49 running)
2694:  (19:09:31) �[32m[20,199 / 22,952]�[0m 1164 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 509s remote, remote-cache ... (50 actions, 48 running)
2695:  (19:09:36) �[32m[20,229 / 22,967]�[0m 1172 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 514s remote, remote-cache ... (50 actions, 48 running)
2696:  (19:09:41) �[32m[20,249 / 22,977]�[0m 1177 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 519s remote, remote-cache ... (50 actions running)
2697:  (19:09:47) �[32m[20,272 / 22,985]�[0m 1187 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 524s remote, remote-cache ... (50 actions running)
2698:  (19:09:52) �[32m[20,293 / 22,993]�[0m 1194 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 529s remote, remote-cache ... (50 actions, 49 running)
2699:  (19:09:57) �[32m[20,317 / 23,004]�[0m 1201 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 534s remote, remote-cache ... (50 actions, 48 running)
2700:  (19:10:02) �[32m[20,343 / 23,016]�[0m 1210 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 539s remote, remote-cache ... (50 actions running)
2701:  (19:10:07) �[32m[20,379 / 23,036]�[0m 1215 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 544s remote, remote-cache ... (50 actions, 47 running)
2702:  (19:10:12) �[32m[20,400 / 23,042]�[0m 1226 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 550s remote, remote-cache ... (50 actions, 49 running)
2703:  (19:10:17) �[32m[20,436 / 23,055]�[0m 1242 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 555s remote, remote-cache ... (50 actions, 46 running)
2704:  (19:10:20) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/ProtocolHandshakeTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
2705:  java/test/org/openqa/selenium/remote/ProtocolHandshakeTest.java:194: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2706:  public <T> java.net.http.HttpResponse<T> sendNative(
2707:  ^
2708:  where T is a type-variable:
2709:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2710:  java/test/org/openqa/selenium/remote/ProtocolHandshakeTest.java:188: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2711:  java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2712:  ^
2713:  where T is a type-variable:
2714:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2715:  (19:10:22) �[32m[20,460 / 23,063]�[0m 1253 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 560s remote, remote-cache ... (50 actions, 48 running)
2716:  (19:10:27) �[32m[20,484 / 23,071]�[0m 1265 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 565s remote, remote-cache ... (50 actions, 49 running)
2717:  (19:10:32) �[32m[20,513 / 23,087]�[0m 1272 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 570s remote, remote-cache ... (50 actions, 48 running)
2718:  (19:10:37) �[32m[20,534 / 23,090]�[0m 1285 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 575s remote, remote-cache ... (50 actions, 47 running)
2719:  (19:10:42) �[32m[20,552 / 23,093]�[0m 1294 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 580s remote, remote-cache ... (50 actions running)
2720:  (19:10:47) �[32m[20,570 / 23,097]�[0m 1303 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 585s remote, remote-cache ... (50 actions running)
2721:  (19:10:52) �[32m[20,594 / 23,108]�[0m 1309 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 590s remote, remote-cache ... (50 actions running)
2722:  (19:10:57) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/node/NodeDirectForwardingListenerTest.jar (1 source file):
2723:  java/test/org/openqa/selenium/grid/node/NodeDirectForwardingListenerTest.java:212: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2724:  public <T> java.net.http.HttpResponse<T> sendNative(
2725:  ^
2726:  where T is a type-variable:
2727:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2728:  java/test/org/openqa/selenium/grid/node/NodeDirectForwardingListenerTest.java:206: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2729:  java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2730:  ^
2731:  where T is a type-variable:
2732:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2733:  (19:10:57) �[32m[20,633 / 23,123]�[0m 1315 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 595s remote, remote-cache ... (50 actions, 45 running)
2734:  (19:11:02) �[32m[20,649 / 23,127]�[0m 1322 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 600s remote, remote-cache ... (50 actions, 48 running)
2735:  (19:11:08) �[32m[20,675 / 23,138]�[0m 1326 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 605s remote, remote-cache ... (50 actions, 48 running)
2736:  (19:11:13) �[32m[20,700 / 23,148]�[0m 1333 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 611s remote, remote-cache ... (50 actions running)
2737:  (19:11:18) �[32m[20,728 / 23,158]�[0m 1343 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 616s remote, remote-cache ... (50 actions, 48 running)
2738:  (19:11:23) �[32m[20,755 / 23,167]�[0m 1353 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 621s remote, remote-cache ... (50 actions, 47 running)
2739:  (19:11:26) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/node/ProxyNodeWebsocketsTest.jar (1 source file):
2740:  java/test/org/openqa/selenium/grid/node/ProxyNodeWebsocketsTest.java:287: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2741:  public <T> java.net.http.HttpResponse<T> sendNative(
2742:  ^
2743:  where T is a type-variable:
2744:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2745:  java/test/org/openqa/selenium/grid/node/ProxyNodeWebsocketsTest.java:280: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2746:  sendAsyncNative(
2747:  ^
2748:  where T is a type-variable:
2749:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2750:  (19:11:28) �[32m[20,779 / 23,171]�[0m 1365 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 626s remote, remote-cache ... (50 actions, 46 running)
2751:  (19:11:29) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/node/RemoteNodeTest.jar (1 source file):
2752:  java/test/org/openqa/selenium/grid/node/RemoteNodeTest.java:147: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2753:  public <T> java.net.http.HttpResponse<T> sendNative(
2754:  ^
2755:  where T is a type-variable:
2756:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2757:  java/test/org/openqa/selenium/grid/node/RemoteNodeTest.java:140: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2758:  java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2759:  ^
2760:  where T is a type-variable:
2761:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2762:  (19:11:33) �[32m[20,797 / 23,176]�[0m 1371 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 631s remote, remote-cache ... (50 actions, 49 running)
2763:  (19:11:38) �[32m[20,815 / 23,181]�[0m 1378 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 636s remote, remote-cache ... (50 actions, 49 running)
2764:  (19:11:43) �[32m[20,839 / 23,188]�[0m 1384 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 641s remote, remote-cache ... (50 actions, 47 running)
2765:  (19:11:48) �[32m[20,860 / 23,194]�[0m 1394 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 646s remote, remote-cache ... (50 actions, 46 running)
2766:  (19:11:53) �[32m[20,898 / 23,205]�[0m 1407 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 651s remote, remote-cache ... (50 actions, 47 running)
2767:  (19:11:59) �[32m[20,911 / 23,208]�[0m 1413 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 657s remote, remote-cache ... (50 actions, 48 running)
2768:  (19:12:04) �[32m[20,946 / 23,226]�[0m 1422 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 662s remote, remote-cache ... (50 actions, 48 running)
2769:  (19:12:09) �[32m[20,996 / 23,258]�[0m 1432 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 667s remote, remote-cache ... (50 actions, 48 running)
2770:  (19:12:14) �[32m[21,028 / 23,273]�[0m 1442 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 672s remote, remote-cache ... (50 actions, 47 running)
2771:  (19:12:19) �[32m[21,068 / 23,296]�[0m 1450 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 677s remote, remote-cache ... (50 actions, 49 running)
2772:  (19:12:24) �[32m[21,110 / 23,321]�[0m 1460 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 682s remote, remote-cache ... (50 actions, 48 running)
2773:  (19:12:29) �[32m[21,161 / 23,354]�[0m 1469 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 687s remote, remote-cache ... (50 actions running)
2774:  (19:12:34) �[32m[21,204 / 23,380]�[0m 1479 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 692s remote, remote-cache ... (50 actions, 47 running)
2775:  (19:12:37) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/grid/router/HandleSessionReadTimeoutTest.jar (1 source file):
2776:  java/test/org/openqa/selenium/grid/router/HandleSessionReadTimeoutTest.java:256: warning: [removal] <T>sendNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2777:  public <T> java.net.http.HttpResponse<T> sendNative(
2778:  ^
2779:  where T is a type-variable:
2780:  T extends Object declared in method <T>sendNative(HttpRequest,BodyHandler<T>)
2781:  java/test/org/openqa/selenium/grid/router/HandleSessionReadTimeoutTest.java:249: warning: [removal] <T>sendAsyncNative(HttpRequest,BodyHandler<T>) in HttpClient has been deprecated and marked for removal
2782:  java.util.concurrent.CompletableFuture<java.net.http.HttpResponse<T>> sendAsyncNative(
2783:  ^
2784:  where T is a type-variable:
2785:  T extends Object declared in method <T>sendAsyncNative(HttpRequest,BodyHandler<T>)
2786:  (19:12:39) �[32m[21,254 / 23,411]�[0m 1487 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 697s remote, remote-cache ... (50 actions running)
2787:  (19:12:44) �[32m[21,277 / 23,424]�[0m 1493 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 702s remote, remote-cache ... (50 actions, 49 running)
2788:  (19:12:50) �[32m[21,316 / 23,447]�[0m 1498 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 707s remote, remote-cache ... (50 actions running)
2789:  (19:12:55) �[32m[21,333 / 23,458]�[0m 1499 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 712s remote, remote-cache ... (50 actions running)
2790:  (19:13:00) �[32m[21,368 / 23,482]�[0m 1502 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 718s remote, remote-cache ... (50 actions running)
2791:  (19:13:05) �[32m[21,410 / 23,507]�[0m 1511 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 723s remote, remote-cache ... (50 actions, 49 running)
2792:  (19:13:10) �[32m[21,436 / 23,525]�[0m 1515 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 728s remote, remote-cache ... (50 actions, 48 running)
2793:  (19:13:16) �[32m[21,472 / 23,549]�[0m 1518 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 733s remote, remote-cache ... (50 actions, 49 running)
2794:  (19:13:21) �[32m[21,509 / 23,573]�[0m 1525 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 738s remote, remote-cache ... (50 actions running)
2795:  (19:13:26) �[32m[21,542 / 23,595]�[0m 1529 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 744s remote, remote-cache ... (50 actions, 49 running)
2796:  (19:13:31) �[32m[21,571 / 23,609]�[0m 1536 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 749s remote, remote-cache ... (50 actions, 49 running)
2797:  (19:13:36) �[32m[21,589 / 23,617]�[0m 1541 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 754s remote, remote-cache ... (50 actions, 49 running)
2798:  (19:13:41) �[32m[21,621 / 23,632]�[0m 1547 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 759s remote, remote-cache ... (50 actions running)
2799:  (19:13:46) �[32m[21,637 / 23,636]�[0m 1555 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 764s remote, remote-cache ... (50 actions, 47 running)
2800:  (19:13:51) �[32m[21,672 / 23,653]�[0m 1562 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 769s remote, remote-cache ... (50 actions, 48 running)
2801:  (19:13:56) �[32m[21,687 / 23,658]�[0m 1568 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 774s remote, remote-cache ... (50 actions, 49 running)
2802:  (19:14:02) �[32m[21,713 / 23,671]�[0m 1570 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 779s remote, remote-cache ... (50 actions running)
2803:  (19:14:07) �[32m[21,737 / 23,680]�[0m 1579 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 784s remote, remote-cache ... (50 actions running)
2804:  (19:14:12) �[32m[21,761 / 23,691]�[0m 1584 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javascript/selenium-webdriver:test-bidi-script-test.js-firefox; 789s remote, remote-cache ... (50 actions, 46 running)
2805:  (19:14:17) �[32m[21,779 / 23,700]�[0m 1586 / 3182 tests, �[31m�[1m2 failed�[0m;�[0m Testing //javasc...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants